#include "dft.h"
#include "zespolona.h"
#define PI  3.1415926535897932

zespolona* dft::DFT_naiwne_1(zespolona* x, int N) {
     zespolona* X = new zespolona[N];
     for(int k=0; k<N; k++) {
         X[k] = zespolona();
         for(int n=0; n<N; n++) {
             X[k] = (X[k] + (x[n] * zespolona::z_biegunowych(1, -2*PI*n*k/N)));
         }
     }
     return X;
}

zespolona* dft::DFT_naiwne_2(zespolona* x, int N) {
     zespolona* X = new zespolona[N];
     zespolona* Nty_pierwiastek = new zespolona[N];
     for(int k=0; k<N; k++) {
         Nty_pierwiastek[k] = zespolona::z_biegunowych(1, -2*PI*k/N);
     }
     for(int k=0; k<N; k++) {
         X[k].re = X[k].im = 0.0;
         for(int n=0; n<N; n++) {
             X[k] = (X[k]+ (x[n] * (Nty_pierwiastek[(n*k) % N])));
         }
     }
     delete [] Nty_pierwiastek;
     return X;
}
